跳到主要内容

创建 UI 的工具类收集

创建一个 TextMesh

注意:TextMesh 和 Text 是有区别的

第一个重置是默认创建,第二个是完整的参数


namespace AlsRitter.Utils
{
public class UtilsClass
{
public const int sortingOrderDefault = 5000;

// Create Text in the World
public static TextMesh CreateWorldText(
string text,
Transform parent = null,
Vector3 localPosition = default(Vector3),
int fontSize = 40,
Color? color = null,
TextAnchor textAnchor = TextAnchor.UpperLeft,
TextAlignment textAlignment = TextAlignment.Left,
int sortingOrder = sortingOrderDefault)
{
if (color == null) color = Color.white;
return CreateWorldText(parent, text, localPosition, fontSize, (Color) color, textAnchor, textAlignment,
sortingOrder);
}

// Create Text in the World
public static TextMesh CreateWorldText(Transform parent, string text, Vector3 localPosition, int fontSize,
Color color, TextAnchor textAnchor, TextAlignment textAlignment, int sortingOrder)
{
GameObject gameObject = new GameObject("World_Text", typeof(TextMesh));
Transform transform = gameObject.transform;
transform.SetParent(parent, false);
transform.localPosition = localPosition;

TextMesh textMesh = gameObject.GetComponent<TextMesh>();
textMesh.anchor = textAnchor;
textMesh.alignment = textAlignment;
textMesh.text = text;
textMesh.fontSize = fontSize;
textMesh.color = color;
textMesh.GetComponent<MeshRenderer>().sortingOrder = sortingOrder;
return textMesh;
}
}
}

创建一个 TextUI

在指定位置创建一个 Text UI

private static readonly Vector3 Vector3zero = Vector3.zero;
private static readonly Vector3 Vector3one = Vector3.one;

public static Text DrawTextUI(string textString, Transform parent, Vector2 anchoredPosition, int fontSize, Font font)
{
// 创建一个对象并在它身上挂载组件
GameObject textGo = new GameObject("Text", typeof(RectTransform), typeof(Text));

textGo.transform.SetParent(parent, false);

Transform textGoTrans = textGo.transform;
textGoTrans.SetParent(parent, false);
textGoTrans.localPosition = Vector3zero;
textGoTrans.localScale = Vector3one;

RectTransform textGoRectTransform = textGo.GetComponent<RectTransform>();
textGoRectTransform.sizeDelta = new Vector2(0, 0);
textGoRectTransform.anchoredPosition = anchoredPosition;

Text text = textGo.GetComponent<Text>();
text.text = textString;
text.verticalOverflow = VerticalWrapMode.Overflow;
text.horizontalOverflow = HorizontalWrapMode.Overflow;
text.alignment = TextAnchor.MiddleLeft;

if (font == null) font = GetDefaultFont();

text.font = font;
text.fontSize = fontSize;
return text;
}

public static Font GetDefaultFont()
{
return Resources.GetBuiltinResource<Font>("Arial.ttf");
}